package com.bosssoft.goods.dao;

import com.bosssoft.goods.domain.bean.CatBrandBind;
import com.bosssoft.goods.domain.bean.GoodsBrand;
import com.bosssoft.goods.domain.vo.EditBrandVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 商品品牌操作服务接口类
 * @author Fang_Sir
 * @date 2021-04-13
 */
@Repository
public interface GoodsBrandDao {

    /**
     * 获取品牌列表
     * @return 品牌列表分页数据
     */
    List<GoodsBrand> getBrandList();

    /**
     * 通过名称获取品牌信息
     * @param name 品牌名称
     * @return {@link GoodsBrand}
     */
    GoodsBrand getBrandByName(@Param("name") String name);

    /**
     * 添加商品品牌
     * @param name 商品品牌名称
     * @param uid 操作用户编号
     * @return 返回数据影响量
     */
    int addBrand(@Param("name")String name,@Param("uid") int uid);

    /**
     * 判断商品品牌是否已经存在
     * @param name 品牌名称
     * @return 存在返回 1
     */
    int isBrandExist(@Param("name")String name);

    /**
     * 判断商品品牌是否已经存在
     * @param id 品牌编号
     * @return 存在返回 1
     */
    int isBrandExistById(@Param("id")int id);

    /**
     * 编辑品牌信息
     * @param info 品牌信息
     * @return 返回数据更改行数
     */
    int editBrand(EditBrandVO info);

    /**
     * 删除品牌信息
     * @param id 品牌编号
     * @return 返回数据更改行数
     */
    int delBrand(@Param("id") int id);

    /**
     * 设置第三级分类与品牌绑定
     * @param catId 第三级分类编号
     * @return 返回数据更改数量
     */
     List<CatBrandBind> getCatBrandList(@Param("catId") int catId);

    /**
     * 设置第三级分类与品牌绑定
     * @param catId 第三级分类编号
     * @param brandId 品牌编号
     * @return 返回数据更改数量
     */
    int bindCatBrand(@Param("catId") int catId, @Param("brandId") int brandId);

    /**
     * 判断商品品牌与商品分类是否已关联
     * @param catId 第三级分类编号
     * @param brandId 品牌编号
     * @return 存在返回 1
     */
    int isCatBrandBind(@Param("catId") int catId,@Param("brandId") int brandId);

    /**
     * 移除商品分类与品牌的绑定
     * @param catId 商品分类编号
     * @param brandId 品牌编号
     * @return 返回移除数据行数
     */
    int removeCatBrandBind(@Param("catId") int catId,@Param("brandId") int brandId);
}
